package com.jkl.webserver.Tool;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@Component
public class xFile {
    @Value("D://imgStorage")//注入的值
    private String basePath="";
    public xFile(){
    }
    public xFile(String basePath){
        this.basePath=basePath;
    }

    public void setBasePath(String basePath){
        this.basePath=basePath;
    }
    public String getBasePath(){
        return basePath;
    }
    public List<File> getAllFileByDir(File Dir){//获取一个目录下的所有fIle的文件
        List<File> fileList=new ArrayList<>();
        File[] files = Dir.listFiles();// 获取目录中的所有文件

        if (files != null) {// 判断获取的文件数组是否为空，为空则表示目录不存在或者不是一个目录
            for (File file : files) {// 遍历文件数组，打印每个文件的名称
                if(file.isFile()) {
                    fileList.add(file);
                }
            }
        } else {
            System.out.println(Dir+" 目录为空");
        }
        return fileList;
    }
    public List<File> getAllFileByDir(String DirPath) {
        return getAllFileByDir(new File(DirPath));
    }//获取一个目录下的所有fIle的文件
    public List<File> getAll(File Dir){//获取一个目录下的所有文件
        List<File> fileList=new ArrayList<>();
        File[] files = Dir.listFiles();// 获取目录中的所有文件
        if (files != null) {// 判断获取的文件数组是否为空，为空则表示目录不存在或者不是一个目录
            fileList.addAll(Arrays.asList(files));
        } else {
            System.out.println(Dir.toPath()+" 目录为空");
        }
        return fileList;
    }
    public List<File> getAll(String DirPath) {
        return getAll(new File(DirPath));
    }//获取一个目录下的所有文件
    public String readFile(InputStream is) throws IOException {//读取一个文件的内容
        StringBuilder content=new StringBuilder();
        BufferedInputStream bis = new BufferedInputStream(is);
        byte[] buffer = new byte[1024];
        int len;
        while ((len = bis.read(buffer)) != -1)
        {
            content.append(new String(buffer, 0, len));
        }
        bis.close();
        return  content.toString();
    }
    public String readFile(File file) throws IOException {//读取一个文件的内容
        if(file.exists()){
            return  readFile(Files.newInputStream(file.toPath()));
        }
        else
        {
            System.out.println(file.toPath()+" 不存在");
            return "";
        }
    }
    public String readFile(String path) throws IOException //读取一个文件的内容
    {
        File file=new File(path);
        if(file.exists()){
            return  readFile(Files.newInputStream(file.toPath()));
        }
        else
        {
            System.out.println(file.toPath()+" 不存在");
            return "";
        }
    }
}